package com.cskaoyan.javase.oop1._11static._0introduction._1old;

/**
 * 引例：
 * 创建一个学生类，用来描述我们班全体同学，要求：
 * 		属性：姓名，性别，年龄，学号，学校信息
 * 		行为：吃饭，学习
 *
 * 注：建议性别使用String类型的gender，不推荐使用布尔类型的isMale或者isFemale。
 * 创建多个Student对象，他们的属性取值可以不同，会发现什么问题呢？
 * 显然，我们会发现以下问题：
 * 无论创建多少Student对象，由于该类描述的是我们班全体同学，他们的班级信息实际上是一样的
 * 创建多次对象，需要重复的给一个属性赋相同的值，这是很麻烦的，不方便的。
 * 学校信息这个属性实质上应该是被全体同学所共有的属性，而不是独属于某个对象的。
 * 所以，按照我们以往定义成员变量的方法来定义"学校信息"这个属性，是不合适的！
 *
 * 我们希望这个属性不是属于某一个对象的，而是一种类的特征，是属于类的，属于全体对象所共享的。
 * 所以说一千道一万，"学校信息"这个属性不应该定义为"成员变量"，而应该考虑定义一种"全新的，属于类的"变量。
 * 实际上，属于类的变量在Java当中是存在的，即使用static关键字修饰的，Java当中的静态成员变量。
 *
 * @since 14:42
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Java45Student s1 = new Java45Student("张三", "王道训练营Java45th");
        Java45Student s2 = new Java45Student("李四", "王道训练营Java45th");
        Java45Student s3 = new Java45Student("王五", "王道训练营Java45th");
    }
}

class Java45Student {
    String name;
    /*
        性别的定义建议使用String类型的gender
        而不要使用布尔类型的isMale/isFemale
     */
    String gender;
    int age;
    int id;
    String schoolName;

    public Java45Student(String name, String schoolName) {
        this.name = name;
        this.schoolName = schoolName;
    }

    public void study(){
        System.out.println("学习使我快乐~");
    }

    public void eat(){
        System.out.println("吃饭我也很快乐~");
    }
}
